home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_100 / 178_01 / tvx_cfg.c < prev    next >
C/C++ Source or Header  |  1986-01-16  |  17KB  |  629 lines

  1. /* ------------------------------- tvx_cfg.c ------------------------ */
  2. #include "tvx_defs.ic"
  3.  
  4. #define BL remark("")
  5.  
  6.     char synofr[20] =    /* from table */
  7.       {' ',13,']',000,000,000,000,000,000,000,00,00,00,00,00,00,00,00,00,00};
  8.     char synoto[20] =        /* translate to table */
  9.       {'r','d','{',00,000,0,000,00,00,000,00,00,00,00,00,00,00,00,00,00};
  10.     char funkey = 0;        /* leading char for function key */
  11.     char funchar[50] =    /* code sent by function key */
  12.       {
  13.     000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
  14.     000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
  15.     000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
  16.     000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
  17.     000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
  18.       };
  19.     char funcmd[50] =    /* equivalent command */
  20.       {
  21.     000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
  22.     000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
  23.     000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
  24.     000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
  25.     000, 000, 000, 000, 000, 000, 000, 000, 000, 000,
  26.       };
  27.  
  28. /* define standard command set */
  29.  
  30.     char lexsym[LEXVALUES+1] = { E0, 'r', 'l', 'd', 'u',
  31.       4, 21, 8, 'k', 'i', 11, '"', '\'', ',', '.', 'f', 6, 'p',
  32.       'b', 'e', 2, 'v', 'o', '/', 's', 'g', 23, 25, 24, ';', '&',
  33.       'm', ':', '=', 7, 9, '{', 'a', 16, '?', 'h', 20, 'c', 'j', 't',
  34.       'n', 14, 15, 5, 18, '#', '*', '(', ')' };
  35.  
  36.     char newlex[LEXVALUES+1] ;
  37.  
  38.     char autoin, dsplin, scroll, xcases, warplm, wildch, funesc;
  39.     char rp[80];
  40.  
  41.     FILE *f, *fopen();
  42.  
  43.   main()
  44.   {
  45.  
  46.     FAST int i, val;
  47.  
  48.     cls();
  49.     remark("TVX define a configuration file -- Version 11/12/85");
  50.     BL;
  51.     for (;;)
  52.       {
  53.     prompt("Enter name of file to save configuration in: ");
  54.     reply(rp,79);
  55.     if ((f = fopen(rp,FILEWRITE)) == 0)
  56.         continue;
  57.     else
  58.         break;
  59.       }
  60.  
  61.  
  62.     remark("Standard commands settable by this program:");
  63.  
  64.     BL;
  65. remark("Commands (n => count allowed):");
  66. remark("nA Append lines  B Buff begin   ^B File begin   nC Change chrs  nD Down");
  67. remark("n^D Down column  E Buff end     nF Find         ^F Find-file     G Get save buf");
  68. remark("^G Unkill       nH Half page    nI Insert        J Jump back    nK Kill ch");
  69. remark("n^K Kill line   nL Left          M Mem stat     nN Note loc     n^N Reset loc");
  70. remark("nO Open line    nP Page         ^P Print screen ^Q Quit         nR Right");
  71. remark("nS Save lines   ^S Read file    nT Tidy         ^T Abort        nU Up");
  72. remark("n^U Up column    V Verify      n^W Write buff   nBS Del ch      n; Re-Find");
  73. remark(" / Delete last   = Change last   ' Del ln beg     \" Del ln end   , Ln beg");
  74. remark(" . Line end     nTAB Word rt    n{ Word left    n& Rpt agn");
  75. remark("? Help           * Ins find pat n:p Set param p ^O Op. System");
  76. remark("n^E Edit rptbuf  ^R Restore rpt n#k Execute rpt n k times");
  77. remark("Note: <> repeat, @ command file, and ESCAPE cannot be changed.");
  78.     BL;
  79.  
  80.     for (;;)
  81.       {
  82.     BL;
  83.     prompt("Use standard command definitions? (y/n) ");
  84.     lreply(rp,10);
  85.     if (*rp == 'y')
  86.       {
  87.         for (i=0 ; i <= LEXVALUES ; ++i)
  88.         fputc(lexsym[i],f);        /* write to file */
  89.         goto LEXDONE;
  90.       }
  91.     else if (*rp == 'n')
  92.         break;
  93.       }
  94.  
  95. CAGAIN:
  96.     cls();
  97.     remark("You now must re-define all 47 commands.  You may simply enter");
  98.     remark("the key of the command (followed by a RETURN), or the decimal");
  99.     remark("code of the key, followed by a RETURN.");
  100.     BL;
  101. /* define new commands */
  102.     for (i=0 ; i <= LEXVALUES ; ++i)
  103.     newlex[i] = 0;        /* clear  */
  104.     set(1,"cursor right (r)");
  105.     set(2,"cursor left (l)");
  106.     set(3,"cursor down (d)");
  107.     set(4,"cursor up (u)");
  108.     set(5,"cursor down in col (^d)");
  109.     set(6,"cursor up in col (^u)");
  110.     set(7,"del prev char (backspace)");
  111.     set(8,"kill character (k)");
  112.     set(9,"enter insert mode (i)");
  113.     set(10,"kill a line (^k)");
  114.     set(11,"delete to end of line (\")");
  115.     set(12,"delete to beginning of line (')");
  116.     set(13,"cursor to beginning of line (,)");
  117.     set(14,"cursor to end of line (.)");
  118.     set(15,"find (f)");
  119.     set(16,"find across buffer (^f)");
  120.     set(17,"scroll screen one page (p)");
  121.     set(18,"beginning of buffer (b)");
  122.     set(19,"end of buffer (e)");
  123.     set(20,"beginning of file (^b)");
  124.     set(21,"verify screen (v)");
  125.     set(22,"open line (o)");
  126.     set(23,"delete last thing (/)");
  127.     set(24,"save line in save buff (s)");
  128.     set(25,"get save buffer (g)");
  129.     set(26,"write buffer (^w)");
  130.     set(27,"save external file in save buffer (^y)");
  131.     set(28,"exit (^x)");
  132.     set(29,"find again (;)");
  133.     set(30,"execute repeat buffer (&)");
  134.     set(31,"memory status line (m)");
  135.     set(32,"set parameter (:)");
  136.     set(33,"delete last thing, enter insert (=)");
  137.     set(34,"get back last killed line (^g)");
  138.     set(35,"word rigth (tab)");
  139.     set(36,"word left ({)");
  140.     set(37,"append line to save buffer (a)");
  141.     set(38,"print screen (^p)");
  142.     set(39,"help (?)");
  143.     set(40,"scroll page half screen (h)");
  144.     set(41,"abort edit session (^t)");
  145.     set(42,"change characters (c)");
  146.     set(43,"jump back (j)");
  147.     set(44,"tidy (fill to margin) (t)");
  148.     set(45,"note position (n)");
  149.     set(46,"return to noted position (^n)");
  150.     set(47,"'push' to operating system (^O)");
  151.     set(48,"Edit repeat buffer (^E)");
  152.     set(49,"Restore repeat buffer (^R)");
  153.     set(50,"Execute repeat buffer k (#)");
  154.     set(51,"Insert last find match (*)");
  155.  
  156.     cls();
  157. remark("Commands have been defined. You can start over if you made any mistakes.");
  158.     remark("");
  159.     prompt("Are they ok? (y/n) ");
  160.     lreply(rp,10);
  161.     if (*rp == 'n')
  162.     goto CAGAIN;
  163.     
  164.     for (i=0 ; i <= LEXVALUES ; ++i)
  165.       {
  166.     fputc(newlex[i],f);        /* write to file */
  167.     lexsym[i] = newlex[i];
  168.       }
  169.  
  170. LEXDONE:
  171.     syno();
  172.     funkeys();
  173.  
  174.     cls();
  175.     prompt("Use autoindent (n default) (y/n): ");
  176.     lreply(rp,10);
  177.     if (*rp == 'y')
  178.     fputc(1,f);
  179.     else 
  180.     fputc(0,f);
  181.  
  182.     BL;
  183.     prompt("Home display line: (1-66, 16 default): ");
  184.     rdint(&val);
  185.     if (val > 66 || val <= 0)
  186.     fputc(16,f);
  187.     else
  188.         fputc(val,f);
  189.  
  190.     BL;
  191.     prompt("Scroll window (0 default): ");
  192.     rdint(&val);
  193.     if (val > 24)
  194.     val = 0;
  195.     fputc(val,f);
  196.  
  197.     BL;
  198.     prompt("Find case (e=exact,a=any, any default): "); 
  199.     lreply(rp,10);
  200.     if (*rp == 'e')
  201.         fputc(1,f);
  202.     else
  203.         fputc(0,f);
  204.  
  205.     BL;
  206.  
  207.     prompt("Auto line wrap width (0 default): ");
  208.     rdint(&val);
  209.     if (val > 79)
  210.     val = 0;
  211.     fputc(val,f);
  212.  
  213.     BL;
  214.     prompt("Use wild cards (y default) (y/n)? ");
  215.     lreply(rp,10);
  216.     if (*rp == 'n')
  217.     fputc(0,f);
  218.     else 
  219.     fputc(1,f);
  220.  
  221.     BL;
  222.     prompt("Use BACKUP.LOG file (n default) (y/n)? ");
  223.     lreply(rp,10);
  224.     if (*rp == 'y')
  225.         fputc(1,f);
  226.     else
  227.         fputc(0,f);
  228.     
  229. #ifdef MSDOS
  230.     BL;
  231.     remark("The editor can recognize Ctrl-z as EOF, or it can ignore ^Z and");
  232.     remark("just use the standard MS-DOS end of file mark.");
  233.     prompt("Should the editor recognize Ctrl-Z as EOF? (y/n) ");
  234.     lreply(rp,10);
  235.     if (*rp == 'y')
  236.         fputc(1,f);
  237.     else
  238.         fputc(0,f);
  239. #endif
  240.  
  241.     cls();
  242.     remark("Configuration file created.");
  243.     fclose(f);
  244.   }
  245.  
  246. /* ===============================>>> FUNKEYS <<<========================*/
  247.   funkeys()
  248.   {
  249.  
  250.     FAST int j,i,val;
  251.     SLOW int fun;
  252.  
  253. FAGAIN:
  254.     cls();
  255.     remark("You may now define up to 49 function keys to be translated to");
  256.     remark("commands OR letters.  This translation will take place before");
  257.     remark("the editor gets the character at any level  -- thus the translation");
  258.     remark("will apply equally to command mode and insert mode.  The translation");
  259.     remark("assumes each function key generates a 2 character sequence.  The");
  260.     remark("first character is an 'escape' character that must be the same for");
  261.     remark("each key.  If the 'escape' character is really ESC, then you must");
  262.     remark("also define one function key to have ESC as its translat